package newApi;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamTest3 {
    public static void main(String[] args) {
        /**
         * 流是存在短路运算的。
         * 它里面存在这样一个容器，容器里存的是对流里面每一个元素的操作，当对流进行处理的时候，它会拿着流里面的
         * 操作逐个的应用到流里面的每一个元素。
         * 如下打印结果为:
         * hello
         * 5
         */
        List<String> strings = Arrays.asList("hello", "world", "hello world");
        strings.stream().mapToInt(item -> {
            int length = item.length();
            System.out.println(item);
            return length;
        }).filter(item -> item == 5).findFirst().ifPresent(item -> System.out.println(item));


        /**
         * 找出集合中所有单词并去重
         * 最终期望输出如下三个单词（不要求顺序）：hello welcome world
         */
        List<String> list = Arrays.asList("hello welcome", "welcome hello", "hello world hello", "hello welcome");
//        list.stream().flatMap(str -> Stream.of(str.split(" "))).collect(Collectors.toCollection(HashSet::new)).forEach(System.out::println);
//        list.stream().flatMap(str -> Stream.of(str.split(" "))).distinct().forEach(System.out::println);
        list.stream().map(str->str.split(" ")).flatMap(Arrays::stream).distinct().forEach(System.out::println);
    }

}
